package cn.h8k.hj212.codec;

import cn.h8k.hj212.entity.Hj212Message;

/**
 * HJ212协议实体类编解码器接口
 * 使用实体类而不是Map进行编解码
 */
public interface Hj212EntityCodec {
    
    /**
     * 编码：将HJ212消息实体转换为协议字符串
     * @param message HJ212消息实体
     * @return 符合HJ212-2017标准的协议字符串
     */
    String encode(Hj212Message message);
    
    /**
     * 解码：将HJ212协议字符串转换为消息实体
     * @param data HJ212协议字符串
     * @return 解析后的HJ212消息实体
     * @throws IllegalArgumentException 当数据格式错误或校验失败时抛出异常
     */
    Hj212Message decode(String data);
} 